home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / install / install.c < prev    next >
C/C++ Source or Header  |  1994-11-16  |  7KB  |  278 lines

  1. /*************************************************************************
  2. *
  3. *                installer
  4. *
  5. *                                                    cording ... TaroPYON
  6. *
  7. *************************************************************************/
  8.  
  9. #include    "ccilib.h"
  10. #include    "kbcode.h"
  11. #include    "install.h"
  12.  
  13. #define    VERSION    "1.01a"
  14. #define    EDITION    "02"    /* for FreeSoftWare collection 9 */
  15.  
  16. #define    EVNO_EXIT    (9999)
  17.  
  18. #ifdef    _FC9
  19. #    define    SCREEN_MODE        (0x0303)
  20. #else
  21. #    define    SCREEN_MODE        (0x030A)
  22. #endif
  23. int        DrvInst       = -1;
  24. int        PltNoWhite    = 5;
  25. int        ColBoxNormal  = 0;
  26. int        ColBoxInfo    = 0;
  27. int        ColBoxCaution = 0;
  28. int        ColBoxError   = 0;
  29. int        ColMesh       = 0;
  30.  
  31. int        init();
  32. int        term();
  33. int        install_main();
  34. int        set_debug_menu(char *mnu);
  35.  
  36. #ifdef    DEBUG
  37. #    define    _TOPMENU_NUM    (2)
  38. #else
  39. #    define    _TOPMENU_NUM    (1)
  40. #endif
  41.  
  42. int        main(int argc, char **argv)
  43. {
  44.     init();
  45.     install_main();
  46.     term();
  47.  
  48.     return (0);
  49. }
  50.  
  51. int    init()
  52. {
  53.     char        msg[80], tmp[128];
  54.     char       *mnu;
  55.     char       *msgMenu[_TOPMENU_NUM];
  56.     char       *img;
  57.     int            winBasCol;
  58.  
  59.     APL_init(SCREEN_MODE,1,1);
  60.     LHA_sysInit(NULL);    /* LHA.DLLの初期化    */
  61.  
  62.     /*------------------------------------------------------------------*/
  63.     disp_desktop();
  64.     SCN_wrtPage(1);
  65.     tmp[0] = 0;
  66.     tmp[1] = 255;    /* blue  */
  67.     tmp[2] = 255;    /* red   */
  68.     tmp[3] = 255;    /* green */
  69.     SCN_palette(0,PltNoWhite,tmp);
  70.  
  71.     /* ベースウィンドゥ    ------------------------------------------------*/
  72.     SCN_wrtPage(1);
  73.     winBasCol = 0;
  74. /*    winBasCol = SCN_tile_newMixCol(winBasCol,MIXCOL_STD1,C_HWHITE,C_WHITE);*/
  75.     winBasCol = C_THROUGH;
  76.     APL_openBaseWin(winBasCol);
  77.  
  78.     /* トップバー    ----------------------------------------------------*/
  79.     SCN_wrtPage(1);
  80.     strcpy(msg,"  SYSTEM  ");
  81.     msgMenu[0] = " INSTALL ";
  82. #if    _TOPMENU_NUM > 1
  83.     msgMenu[1] = "  DEBUG  ";
  84. #endif
  85.     APL_openTopBarMenu(Fnt16x16,msg,C_HGREEN, _TOPMENU_NUM,Fnt16x12,msgMenu,C_MBLACK);
  86.  
  87.     /* [Oh!FM TOWNS]メニュー    ----------------------------------------*/
  88.     MNU_datAdd( SysMnu, 0, 'A', Fnt16x16, 0, "about_dlg"  , 0, "このプログラムについて");
  89.     MNU_datAdd( SysMnu, 0, 'F', Fnt16x16, 0, "dsp_freemem", 0, "フリーメモリ"          );
  90.  
  91.     /* [INSTALL]メニュー    --------------------------------------------*/
  92.     mnu = AplMnu[0];
  93.     MNU_datAdd( mnu, 0, 'H', Rom16x16, 0, "inst_help", "message.doc", "説明"      );
  94.     MNU_datAdd( mnu, 0,  0 , Rom16x16, 0, ""         , 0            ,  NULL       );
  95.     MNU_mnuAdd( mnu, 0, 'T', Fnt16x16, get_inst_taro_mnu()          , "TaroPYON"  );
  96.     MNU_mnuAdd( mnu, 0, 'G', Fnt16x16, get_inst_gsplaydata_mnu()    , "MUSIC data for GSPLAY");
  97.  
  98.     /* [DEBUG]メニュー    ------------------------------------------------*/
  99. #ifdef    DEBUG
  100.     set_debug_menu( AplMnu[1] );
  101. #endif
  102.  
  103.     /* [EXIT]ボタン    ----------------------------------------------------*/
  104.     APL_setExitEvt("EXIT",EVNO_EXIT,"exit_chk");
  105.  
  106.     /* DTA ライブラリ    ------------------------------------------------*/
  107.     AplDtaInit();
  108.  
  109.     /* 色番号    --------------------------------------------------------*/
  110.     ColBoxNormal  = SCN_tile_newMixCol(ColBoxNormal ,MIXCOL_NORMAL,C_DARK   ,C_WHITE);
  111.     ColBoxInfo    = SCN_tile_newMixCol(ColBoxInfo   ,MIXCOL_NORMAL,C_HGREEN ,C_WHITE);
  112.     ColBoxError   = SCN_tile_newMixCol(ColBoxError  ,MIXCOL_NORMAL,C_HRED   ,C_WHITE);
  113.     ColBoxCaution = SCN_tile_newMixCol(ColBoxCaution,MIXCOL_NORMAL,C_HYELLOW,C_WHITE);
  114.     ColMesh       = SCN_tile_newMixCol(ColMesh      ,MIXCOL_NORMAL,C_THROUGH,C_WHITE);
  115.  
  116.     return (NORMAL);
  117. }
  118.  
  119. int    term()
  120. {
  121.     char    tmp[256];
  122.  
  123.     FS_chdrv(toupper(DirStart[0]) - 'A');
  124.     sprintf(tmp,"%s.",DirStart);
  125.     FS_chdir(tmp);
  126.  
  127.     APL_term();
  128. }
  129.  
  130. int        disp_desktop()
  131. {
  132. #ifdef    _FC9
  133.     /* for FreeSoftWare collection 9 */
  134.     char        tmp[256];
  135.  
  136.     sprintf(tmp,"%s%s", DirStart, "install.tif" );
  137.     return tif_load(tmp);
  138.     return (0);
  139. #else
  140.     /* for APPRE CD vol.1 */
  141. #define    DESKTOP_TIFNUM    (8)
  142.     int            n;
  143.     char        tmp[256];
  144.     static char    lastno = -1;
  145.     static char    *tbl[DESKTOP_TIFNUM] =
  146.     {
  147.         "towns04.tif",
  148.         "towns05.tif",
  149.         "towns06.tif",
  150.         "towns07.tif",
  151.         "towns08.tif",
  152.         "towns09.tif",
  153.         "towns10.tif",
  154.         "towns11.tif" 
  155.     };
  156.  
  157.     if ( lastno < 0 )
  158.     {
  159.         n = 7;
  160.     } else
  161.     {
  162.         srand( clock() & 0x7FFFFFFF );
  163.         do
  164.         {
  165.             n = rand() % DESKTOP_TIFNUM;
  166.         } while ( n == lastno );
  167.     }
  168.     sprintf(tmp,"%s../HYOUSHI/%s", DirStart, tbl[n] );
  169.     lastno = n;
  170.  
  171.     return tif_load(tmp);
  172. #endif
  173. }
  174.  
  175. int        install_main()
  176. {
  177.     int        ret;
  178.  
  179.     SCN_wrtPage(1);
  180.     syl_clear();
  181.     for (;;)
  182.     {
  183.         MOS_CON();
  184.         ret = EV_chk(EvTop,0);
  185.         if ( ret == EVNO_EXIT )
  186.             break;
  187.     }
  188.     return (0);
  189. }
  190.  
  191. int        exit_chk()
  192. {
  193.     char    *dlgTxm;
  194.     int        i, ret;
  195.     static char    *msgtbl[4] =
  196.     {
  197.         "",
  198.         "インストーラを終了しますか?",
  199.         "",
  200.         NULL
  201.     };
  202.  
  203.     dlgTxm = DlgTxm_open(ColBoxCaution);
  204.     for ( i = 0; msgtbl[i] != NULL; ++i )
  205.         DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, msgtbl[i]);
  206.  
  207.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HWHITE, C_DARK,
  208.         '\r'  , KA_EXEC  , EVNO_EXIT, "", 0, "終了 : [実行]");
  209.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HWHITE, C_DARK,
  210.         '\x1B', KA_CANCEL,         0, "", 0, "取消 : [取消]");
  211.     DlgTxm_setSize(dlgTxm,480,64);
  212.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  213.     ret = DlgTxm_start(dlgTxm);
  214.     DlgTxm_close(dlgTxm);
  215.     if ( ret != EVNO_EXIT )
  216.         ret = 0;
  217.  
  218.     return (ret);
  219. }
  220.  
  221. int        about_dlg()
  222. {
  223.     char    *dlgTxm;
  224.  
  225.     dlgTxm = DlgTxm_open(ColBoxNormal);
  226.     DlgTxm_setTitle(dlgTxm,Fnt16x16, "Installer ver.%s edition #%s",
  227.         VERSION, EDITION );
  228.  
  229.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,"TaroPYON SoftWare Collection インストールプログラム");
  230.     DlgTxm_putf( dlgTxm, Fnt16x08, TXMDAT_ATT_CENTER, "");
  231.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"for FreeSoftWare colletion 9");
  232.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
  233.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "%c%c TaroPYON",
  234.         Gaiji_copyright>>8, Gaiji_copyright&0xFF );
  235.  
  236.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK,
  237.         C_WHITE, C_HILIGHT, C_DARK, '\r', KA_EXEC, 0, "", 0, "OK : [実行]");
  238.     DlgTxm_setSize(dlgTxm,320,48);
  239.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  240.  
  241.     DlgTxm_start(dlgTxm);
  242.     DlgTxm_close(dlgTxm);
  243.  
  244.     return (0);
  245. }
  246.  
  247. int        dsp_freemem()
  248. {
  249.     unsigned int    siz;
  250.     char           *dlgTxm;
  251.     char            tmp1[32], tmp2[32];
  252.  
  253.     siz = APL_getFreeMem();
  254.     dlgTxm = DlgTxm_open(ColBoxInfo);
  255.     DlgTxm_setTitle(dlgTxm,Fnt16x16, "FREE MEMORY SIZE");
  256.  
  257.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,
  258.         "free memory %s (%s) bytes",
  259.         fdl_ltoaDig(siz,tmp1), fdl_ltoaMsg(siz,tmp2) );
  260.  
  261.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK,
  262.         C_WHITE, C_HILIGHT, C_DARK, '\r', KA_EXEC, 0, "", 0, "OK : [実行]");
  263.     DlgTxm_setSize(dlgTxm,400,64);
  264.     DlgTxm_setPosition(dlgTxm,DLGPOS_NORMAL,2,22);
  265.  
  266.     DlgTxm_start(dlgTxm);
  267.     DlgTxm_close(dlgTxm);
  268. }
  269.  
  270. #include    "insttaro.c"
  271. #include    "instkok2.c"
  272. #include    "instexec.c"
  273. #include    "instlib.c"
  274. #include    "item.c"
  275. #ifdef    DEBUG
  276. #    include    "debug.c"
  277. #endif
  278.